package com.sihan.framework.etm.mapper.business;

import com.framework.mybatis.mapper.BaseMapper;
import com.sihan.framework.etm.dto.business.BaseDTO;
import com.sihan.framework.etm.dto.business.ExceptionToolAddDTO;
import com.sihan.framework.etm.dto.business.ToolOverviewDTO;
import com.sihan.framework.etm.entity.business.ToolInspectDetail;
import com.sihan.framework.etm.entity.business.ToolInspectInDetail;
import com.sihan.framework.etm.vo.business.BaseToolInfo;
import com.sihan.framework.etm.vo.business.BorrowPlanVO;
import com.sihan.framework.etm.vo.business.ToolOverviewVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author gyz
 * @version 1.0
 * @since jdk1.8
 */
@Mapper
public interface InspectDetailMapper extends BaseMapper<ToolInspectDetail,String> {


	List<ToolOverviewVO> getToolList(ToolOverviewDTO dto);

	List<ToolOverviewVO> getToolCheckList(ToolOverviewDTO dto);

	int updateRemindCycle(@Param(value = "remindCycle") String remindCycle);

	String getCheckMasterId();

	List<BorrowPlanVO> getCheckToolOutStatistical(@Param("masterId") String masterId);

	List<BaseToolInfo> getToolCheckOutList(BaseDTO dto);

	String getRemindMaterId();

	List<BaseToolInfo> getToolNeedCheckList(BaseDTO dto);

	@SuppressWarnings("rawtypes")
	List<Map> getCheckToolOutCountStatistical();

	@SuppressWarnings("rawtypes")
	List<Map> getCheckToolInStatistical(String masterId);

	List<BaseToolInfo> getCheckToolInList(BaseDTO dto);

	String getOutDate(String toolId);

	int addException(ExceptionToolAddDTO dto);

	String getParentTypeName(@Param(value = "type") String type);

	/**
	 *
	 * @description 删除检验明细
	 * @param rfids
	 * @param masterId
	 * @auther 韩兵
	 * @Date 2020年7月18日
	 * @return void
	 */
	void deleteInspectDetailByToolCodesAndMasterId(@Param("rfids") List<String> rfids,@Param("masterId") String masterId);

	int cacelException(ExceptionToolAddDTO dto);
	
	void updateInspectOutStatus(@Param("rfIds") List<String> rfIds);
	
	/**
	 * 
	 * @description 查询检验出库和入库的数量
	 * @param userId
	 * @param masterId
	 * @return
	 * @auther 韩兵
	 * @Date 2020年8月5日
	 * @return List<BorrowPlanVO>
	 */
	List<BorrowPlanVO> selectHasNoReturnToolByUserId(@Param("userId") String userId,@Param("masterId") String masterId);
	
	/**
	 * 
	 * @description 移除提醒清单
	 * @param rfids
	 * @auther 韩兵
	 * @Date 2020年9月10日
	 * @return void
	 */
	void updateInspectRemindIsDelete(@Param("rfIds") List<String> rfIds);
	
	/**
	 * 
	 * @description 查询需要检验报告的工器具tid
	 * @return
	 * @auther 韩兵
	 * @Date 2020年10月15日
	 * @return List<String>
	 */
	List<ToolInspectInDetail> selectTidForInspectReport();
	
	/**
	 * 
	 * @description 查询送检出库的主键
	 * @param toolIds
	 * @return
	 * @auther 韩兵
	 * @Date 2020年12月28日
	 * @return List<Map>
	 */
	List<Map<String,String>> listLastInspectOutMasterId(@Param("toolIds") List<String> toolIds);
}
